# -*- coding: utf-8 -*-
# @Time : 2023/12/25 22:42
# @Author : Lpb
# @File : order_server.py
from flask import Flask, request, jsonify
import redis
import json

app = Flask(__name__)
db = []

redis_conn = redis.Redis(
    host='127.0.0.1',
    port=6379,
    db=8,
    password='xxx'

)


@app.route('/create_order', methods=['post'])
def create_order():
    # 提取发往服务器的JSON格式的请求数据
    data = request.json
    # 从请求数据中提取order_id字段，它应该代表想要创建的订单的唯一标识符。
    order_id = data['order_id']
    # 检查订单是否已存在
    # 果找到一个匹配的order_id，它将返回一个包含消息order already exist的JSON响应，以及HTTP状态码403（禁止），表示操作不允许
    for order in db:
        if order_id == order['order_id']:
            return jsonify({'msg': 'order already exist'}), 403
    # 创建新订单并存储：
    # 创建一个包含订单信息的字典，包括订单ID、状态和地址。
    order_msg = {'order_id': order_id, 'status': '未支付', 'address': 'shanghai'}
    # 将新订单添加到db列表中，这里的db只是一个简单的Python列表，用作示例数据库
    db.append(order_msg)
    # 将订单信息保存到Redis数据库中，order_id作为键，订单信息的JSON字符串作为值，同时设置过期时间为300秒（5分钟）
    redis_conn.set(order_id, json.dumps(order_msg), ex=300)
    # 如果订单创建成功（即没有发现重复的order_id），函数将返回一个包含消息order create success的JSON响应和HTTP状态码200（表示成功）
    return jsonify({'msg': 'order create success'}), 200


@app.route('/quert_order', methods=['get'])
def get_order():
    data = request.args
    order_id = data['order_id']
    redis_res = redis_conn.get(order_id)
    if redis_res is not None:
        return jsonify(json.loads(redis_res.decode('utf-8'))), 200
    for order in db:
        if order['order_id'] == order_id:
            return jsonify(order), 200
        return jsonify({'msg': 'order_id not exist'}), 403


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8999, debug=True)
